React Compiler
2023/3/28現在、Metaの内部で使われている
そのうち、OSS化する予定
Please note that the annotation mode is a temporary one to aid early adopters, and that we don’t intend for the "use memo" directive to be used for the long term. ref メモ化処理の自動化
今までの「無駄にrenderingされるから自分でmemo化する」という判断が宣言的でないmrsekut.icon
どういう風に使われて、どのタイミングでrenderingされるのか、といったことを意識する必要がある
react compilerがcomponentをtranspileして、変更があったかどうかを判断するコードが生成される
React Compilerによって、Reactの意味論は維持されるが、JSの意味論が変わってしまう
Component内に書いた関数が何故か実行されない、という挙動になる
あまり関係ないけど、React Adbanced 2023の元のコードが、Reactでそんな描き方しなくない?というコードになってるのが気になるmrsekut.icon
code:ts
function VideoTag({ heading, video, filter }) {
const filteredVideos = [];
for (const video of videos) {
if (applyFilter(video, filter)) {
filteredVideos.push(video);
}
}
...
}
Componentの中でuseState使わずに、filteredVideosのようなmutableな変数を使うと冪等にならなくないか
あまりちゃんと考えてないけど、useMemoやuseCallbackって、そもそも冪等な計算のmemo化をする部分なので、JSの意味論的にそこまで違和感が生まれないのでは、という気もする